package com.ruoyi.asset.sorting.service;

import com.ruoyi.asset.sorting.domain.bo.GarbageSortingOverviewBo;
import com.ruoyi.asset.sorting.domain.bo.GarbageSortingSearchBo;
import com.ruoyi.asset.sorting.domain.bo.StatisticianSortingByRegion;
import com.ruoyi.asset.sorting.domain.vo.GarbageSortingVo;
import com.ruoyi.asset.sorting.domain.vo.SortingCommunityCountVo;
import com.ruoyi.asset.sorting.domain.vo.SortingCommunityMapVo;
import com.ruoyi.asset.sorting.domain.vo.SortingWorkStatisticsVo;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.page.TableDataInfo;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 垃圾分类督导任务完成进度Service接口
 *
 * @author lq
 * @date 2023-11-30
 */
public interface IGarbageSortingService {

    /**
     * 数据导入
     *
     * @return 返回导入失败数据的行号和错误信息
     */
    List<String> importExcel(String excelUrl);

    /**
     * 删除管养范围
     */
    int deleteMaintenanceScope(Set<Long> idsSet);

    /**
     * 查询垃圾分类督导管理范围
     */
    TableDataInfo<GarbageSortingVo> queryMaintenanceScope(GarbageSortingSearchBo searchBo, PageQuery pageQuery);

    /**
     * 查询垃圾分类督导管养范围列表
     */
    List<GarbageSortingVo> queryMaintenanceScope(GarbageSortingSearchBo maintenanceScopeSearchBo);

    /**
     * 查询垃圾分类督导概况
     */
    GarbageSortingOverviewBo getGarbageSortingOverview();

    /**
     * 统计垃圾分类督导
     */
    List<StatisticianSortingByRegion> statForSortingByRegion();

    Map getGarbageSortingCommunityCount();

    /**
     * 智慧大屏垃圾分类左侧
     *
     * @param date 指定日期
     * @return
     */
    List<SortingCommunityCountVo> getSortingCountByCommunity(String date);

    /**
     * 今日统计
     *
     * @param date 指定日期
     * @return
     */
    SortingWorkStatisticsVo getSortingWorkByDate(String date);

    /**
     * 今日统计 指定社区
     *
     * @param date 日期
     * @param community 指定社区
     * @return
     */
    SortingWorkStatisticsVo getSortingWorkByDateAndCommunity(String date, String community);

    SortingCommunityMapVo getCommunityByDate(String community, String date);

    Integer getSortingByDateAndCommunity(String date, String community);
}
